package com.relife.sys.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.relife.common.model.AjaxJson;
import com.relife.common.model.Page;
import com.relife.common.utils.StringUtil;
import com.relife.core.easyui.Easyui;
import com.relife.core.entity.DepartmentEntity;
import com.relife.core.entity.FunctionEntity;
import com.relife.core.entity.PermissionEntity;
import com.relife.core.qbc.QbcQuery;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;



@Controller
@RequestMapping("sys/permission")
public class PermissionController extends BaseController {

	/**
	 * 页面
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午12:14:37
	 * @return
	 */
	@RequestMapping("/permissionList")
	public String permissionList() {
		return "sys/permission/permissionList";
	}

	/**
	 * 数据列表
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午12:14:15
	 * @param perm
	 * @param page
	 * @param res
	 */
	@RequestMapping("/listData")
	public void listData(PermissionEntity perm, Page page, HttpServletResponse res, HttpServletRequest req) {
		QbcQuery qbc = new QbcQuery(perm);
		this.openPermission(qbc);
		service.getPage(qbc, page);
		Easyui.datagrid(page, res);
	}

	/**
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午8:11:33
	 * @param per
	 * @param req
	 * @return
	 */
	@RequestMapping("/permission")
	public String permission(PermissionEntity per, HttpServletRequest req) {
		if (StringUtil.isNotEmpty(per.getId())) {
			per = service.get(PermissionEntity.class, per.getId());
		}
		req.setAttribute("page", per);
		return "sys/permission/permission";
	}

	/**
	 * 部门选择列表
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午8:11:47
	 * @return
	 */
	@RequestMapping("/departList")
	public String departList() {
		return "sys/permission/departList";
	}

	/**
	 * 
	 * 
	 * @author WU
	 * @date 2016年4月29日 下午4:22:48
	 * @param id
	 * @param page
	 * @param res
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping("/departTree")
	public void departTree(String id, Page page, HttpServletResponse res) {
		QbcQuery qbc = new QbcQuery(DepartmentEntity.class);
		qbc.addOrder(Order.asc("orderBy"));
		// this.openPermission(qbc);
		service.getPage(qbc, page);

		DepartmentEntity depart = new DepartmentEntity();
		depart.setId(StringUtil.getRandom(32));
		depart.setDepartCode("{0}");
		depart.setName("本部门");
		depart.setType(4);
		page.getList().add(depart);

		Easyui.ztree(page, res, true);
	}

	/**
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午12:14:00
	 * @param perm
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/save")
	public AjaxJson save(PermissionEntity perm) {
		AjaxJson j = new AjaxJson();
		try {
			service.saveOrUpdate(perm);
		} catch (Exception e) {
			e.printStackTrace();
			j.setException(e);
		}
		return j;
	}

	/**
	 * 
	 * @author WU
	 * @date 2016年4月3日 下午12:13:56
	 * @param perm
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/del")
	public AjaxJson del(PermissionEntity perm) {
		AjaxJson j = new AjaxJson();
		try {
			service.delete(perm);
		} catch (Exception e) {
			e.printStackTrace();
			j.setException(e);
		}
		return j;
	}

	/**
	 * 
	 * @author WU
	 * @date 2017年5月2日 下午4:24:57
	 * @return
	 */
	@RequestMapping
	public String selectUrl() {
		return "sys/permission/selectUrl";
	}

	/**
	 * 
	 * @author WU
	 * @date 2017年5月2日 下午4:24:53
	 * @param page
	 * @param res
	 * @param req
	 */
	@RequestMapping
	public void selectUrlGrid(FunctionEntity fun, Page page, HttpServletResponse res, HttpServletRequest req) {
		QbcQuery qbc = new QbcQuery(fun);
		qbc.add(Restrictions.isNotNull("url"));
		qbc.add(Restrictions.ne("type", 3));
		service.getPage(qbc, page);
		Easyui.datagrid(page, res);
	}

}
